home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Freeware / Read It Later 0.9924 / read_it_later-0.9924-fx.xpi / chrome / isreaditlater.jar / content / ISRILoptions.js < prev    next >
Text File  |  2008-10-31  |  20KB  |  604 lines

  1. var wo;
  2.         
  3. function ISRILoptions()
  4. {
  5.     this.gVKNames = [];
  6.     this.offlineListView = 1;
  7. }
  8.  
  9. ISRILoptions.prototype = {
  10.     
  11.     _init : function() {         
  12.         
  13.         try {
  14.             Components.utils.import("resource://rilglobals/ISRILglobals.js");
  15.             
  16.             // -- Connect to main RIL Objects -- //    
  17.             var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
  18.                     .getService(Components.interfaces.nsIWindowMediator);
  19.             wo = wm.getMostRecentWindow("navigator:browser");
  20.  
  21.  
  22.             if (!wo.ISRIL) {
  23.                 wo = ISRILglobals.mainWindow;    
  24.                 ISRIL.d('no wo');
  25.                 if (!wo.ISRIL) {
  26.                     ISRIL.d('no wo');
  27.                     wo = ( (!window.opener.opener) ? (window.opener):(window.opener.opener) );                
  28.                 }
  29.             }
  30.     
  31.             ISRIL                 = wo.ISRIL;
  32.             ISRILprefs             = wo.ISRILprefs;
  33.             ISRILsync             = wo.ISRILsync;
  34.             ISRILajax             = wo.ISRILajax;
  35.     
  36.             // --- Populate Folder Menu --- //
  37.             ISRIL.loadFolder();
  38.             ISRILoptions.PopulateFolder( ISRIL.GetAllFolders() );
  39.             try { ISRILoptions.PopulateFolder( ISRIL.GetAllFolders(ISRIL.sBookmarks.toolbarFolder), ISRIL.sBookmarks.getItemTitle( wo.PlacesUtils.toolbarFolderId ) + '-> ' ); } catch(err) {}
  40.             ISRILxul.bip('folder').selectedItem = ISRILxul.bip('folder-'+ISRILglobals.folderId);
  41.     
  42.     
  43.             // --- Load Options --- //
  44.     
  45.             //Reading
  46.             ISRILxul.bip('mark').selectedItem = ISRILxul.bip('mark-' + ISRILprefs.pref('mark') ); 
  47.             ISRILxul.bip('read').selectedItem = ISRILxul.bip('read-' + ISRILprefs.pref('read') );
  48.             ISRILxul.bip('open').selectedItem = ISRILxul.bip('open-' + ISRILprefs.pref('open') );
  49.             ISRILxul.bip('autoMarkItems').checked = ISRILprefs.prefB('autoMark');
  50.                     
  51.             
  52.             //Saving        
  53.             ISRILxul.bip('closeTab').checked = ISRILprefs.prefB('auto-close-tab');
  54.             ISRILxul.bip('link-checks').selectedItem = ISRILxul.bip('link-checks-' + ISRILprefs.pref('link-checks') );
  55.             ISRILxul.bip('AutoTags').value = ISRILprefs.pref('auto-tags');
  56.             
  57.             //Appearance
  58.             ISRILoptions.checkPageTotal();
  59.             ISRIL.d( ISRILxul.bip('list-page').selectedIndex );
  60.             ISRILxul.bip('list-view').selectedIndex = (ISRILprefs.pref('list-view')=='normal')?0:1;
  61.             ISRILxul.bip('list-place').selectedItem = ISRILxul.bip('list-place-' + ISRILprefs.pref('list-place') );
  62.             ISRILxul.bip('list-type').selectedItem = ISRILxul.bip('list-type-' + ISRILprefs.pref('list-type') );
  63.             ISRILoptions.togglePages();
  64.             ISRILxul.bip('list-page').selectedIndex = 9;
  65.             
  66.             ISRILxul.bip('ShowClickToSave').checked = ISRILprefs.prefB('clicktosaveinbar');
  67.             ISRILxul.bip('ShowUnreadCount').checked = ISRILprefs.prefB('show-count');        
  68.             ISRILxul.bip('context-menu').checked = ISRILprefs.prefB('context-menu');        
  69.             ISRILxul.bip('force-styles').checked = ISRILprefs.prefB('force-styles');        
  70.             
  71.             //Offline
  72.             ISRILxul.bip('AutoOffline').checked = ISRILprefs.prefB('autoOffline');
  73.             
  74.             //Shortcuts
  75.             var listitems = ISRILxul.bip('ks').getElementsByTagName('listitem');
  76.             var id;
  77.             var keySet;
  78.             for(i in listitems) {
  79.                 if (listitems[i].id) {
  80.                     id = listitems[i].id.replace(ISRILxul.dPrefix + 'ks-','');
  81.                     keySet = ISRILprefs.pref('hotkey_'+id).split('||');
  82.                     listitems[i].value = ISRILprefs.pref('hotkey_'+id);
  83.                     ISRILxul.bi(listitems[i].id + '-v').setAttribute('label', keySet[0] + ' + ' + keySet[1] );    
  84.                 }
  85.             }
  86.             
  87.             
  88.             //Syncing    
  89.             ISRILsync.GetAFeed();
  90.             
  91.             //Online Access
  92.             ISRILxul.bip('feed').checked = ISRILprefs.prefB('feed');
  93.             ISRILxul.bip('sync').checked = ISRILprefs.prefB('sync');
  94.             ISRILxul.bip('feed-private').checked = ISRILprefs.prefB('feed-private');
  95.     
  96.             ISRILoptions.CheckOnlineSettings();
  97.                 
  98.                 
  99.             //Google Reader
  100.             ISRILxul.bip('integrate-gr').checked = ISRILprefs.prefB('integrate-gr');        
  101.             
  102.             
  103.             // -- Get Keysets -- //        
  104.             for (var property in KeyEvent) {
  105.                 ISRILoptions.gVKNames[KeyEvent[property]] = property.replace("DOM_","");
  106.             }
  107.             ISRILoptions.gVKNames[8] = "VK_BACK";
  108.                     
  109.             ISRILoffline._init();    
  110.     
  111.             //Select Tab
  112.             ISRILoptions.selectTab( null , ((window.arguments && window.arguments[0])?(window.arguments[0]):('workflow')) );
  113.         } catch(err) {
  114.             window.close();
  115.             alert('Error loading options: ' + err);
  116.         }
  117.         
  118.     },
  119.     
  120.     selectTab : function(obj, value) {
  121.         value = ((obj)?(obj.value):(value));
  122.         
  123.         if (this.lastTab != value) {
  124.             if (this.lastTab) {
  125.                 ISRILxul.bip('opts-' + this.lastTab ).className = ISRILxul.bip('opts-' + value ).className;
  126.             }
  127.             ISRILxul.bip('options-menu').selectedItem = ISRILxul.bip('options-menu-'+value);
  128.             
  129.             ISRILxul.bip('opts-' + value ).className += ' ' + ISRILxul.dPrefix + 'open';
  130.             
  131.             //onopen function
  132.             if (ISRILoptions['func_'+value]) {
  133.                 ISRILoptions['func_'+value]();    
  134.             }
  135.             
  136.             this.lastTab = value;            
  137.         }
  138.     },
  139.     
  140.     PopulateFolder : function(folders, prefix) {
  141.         prefix = ( (!prefix) ? (''):(prefix) );
  142.         var i;
  143.         var folder;
  144.         for(i in folders) {
  145.             folder = folders[i].node;
  146.             ISRILxul.bip('folderItems').appendChild( ISRILxul.createNode('menuitem', {label:prefix+folder.title,id:ISRILxul.dPrefix+'folder-'+folder.itemId,value:folder.itemId}) );
  147.             if (folders[i].subs) { ISRILoptions.PopulateFolder(folders[i].subs, prefix+'-> '); }
  148.         }
  149.     },
  150.     
  151.     // --- //
  152.     
  153.     SelectKey : function(event) {
  154.         ISRILxul.bip("newKey").disabled = false;
  155.         ISRILxul.bip("setKey").disabled = false;
  156.         ISRILxul.bip('newKey').focus();
  157.     },
  158.     DetectKey : function(event) {
  159.         event.preventDefault();
  160.         event.stopPropagation();
  161.         
  162.         var modifiers = [];
  163.         if(event.altKey) modifiers.push("alt");
  164.         if(event.ctrlKey) modifiers.push("control");
  165.         if(event.metaKey) modifiers.push("meta");
  166.         if(event.shiftKey) modifiers.push("shift");
  167.         
  168.         modifiers = modifiers.join(" ");
  169.         
  170.         var key = ""; var keycode = "";
  171.         if(event.charCode) key = String.fromCharCode(event.charCode).toUpperCase();
  172.         else { keycode = ISRILoptions.gVKNames[event.keyCode]; if(!keycode) return;}
  173.         
  174.         ISRILoptions.lastKeySet = modifiers+'||'+((key)?(key):(keycode));
  175.         ISRILxul.bip('newKey').value = ISRIL.formatKey( modifiers, key, keycode );
  176.     },
  177.     SetKey : function(event) {
  178.         if (ISRILoptions.lastKeySet && ISRILxul.bip('ks').selectedItem) {
  179.             ISRILxul.bip('ks').selectedItem.value = ISRILoptions.lastKeySet;
  180.             ISRILxul.bi( ISRILxul.bip('ks').selectedItem.id + '-v' ).setAttribute('label' , ISRILxul.bip('newKey').value );
  181.         }
  182.     },
  183.     
  184.     // -- Appearance -- //
  185.     
  186.     func_appearance : function() {
  187.         ISRILoptions.checkPageTotal();        
  188.     },
  189.     
  190.     checkPageTotal : function() {
  191.         var maxRows = ISRILxul.maxPageN( ISRILxul.bip('list-view').selectedItem.value );
  192.         var n = ISRILxul.bip('list-page').value;
  193.         var current = ISRILprefs.pref('list-page') * 1;
  194.         
  195.         ISRILxul.bip('list-page-msg').value = '';
  196.         
  197.         ISRILxul.fillSelect( ISRILxul.bip('list-page'), 4, maxRows, current<=maxRows?current:maxRows );
  198.         
  199.         ISRILxul.bip('list-page-msg').value = ISRILxul.bip('list-view').selectedItem.value == 'normal' ? ISRIL.l('pageNswitch') : '';
  200.         
  201.     },
  202.     
  203.     togglePages : function() {
  204.         ISRILxul.bip('list-page').disabled = (ISRILxul.bip('list-type').selectedIndex == 0)?false:true;
  205.     },
  206.     
  207.     
  208.     // -- Offline Options -- //
  209.     
  210.     func_offline : function() {
  211.         ISRILoptions.offlinePopList();
  212.     },
  213.     
  214.     offlinePopList : function() {
  215.         
  216.         l = ISRIL.GetList(11);
  217.         ISRILoptions.checkList = new Object();
  218.         
  219.         ISRILxul.ClearMenu( ISRILxul.bip('offlineList-rows') );
  220.         
  221.         var n = 0;
  222.         for(i in l) {
  223.             nsURI = ISRIL.uri(l[i].uri);
  224.             
  225.             var rowClass = '';
  226.             var disabled = false;
  227.             var hidden = false;
  228.             if (!ISRILoffline.getF(l[i].itemId).exists()) {
  229.                 rowClass += ISRILxul.dPrefix+'not-saved-offline';
  230.                 disabled = true;
  231.                 hidden = true;
  232.             } else {
  233.                 n++;    
  234.             }
  235.             
  236.             var row = ISRILxul.createNode('row', {class:rowClass,hidden:hidden} );
  237.             var chkbox = ISRILxul.createNode('checkbox', {id:ISRILxul.dPrefix+'ol_r_'+l[i].itemId,disabled:disabled});
  238.             var title = ISRILxul.createNode('label', {value:((l[i].title.length > 0)?(l[i].title):(nsURI.host)), tooltiptext:l[i].title, style:"background-image:url('"+ISRIL.sIcon.getFaviconImageForPage(nsURI).spec+"')"});
  239.  
  240.             row.appendChild(chkbox);
  241.             row.appendChild(title);
  242.             
  243.             ISRILxul.bip('offlineList-rows').appendChild(row);
  244.             
  245.             ISRILoptions.checkList[i] = {chkbox:chkbox, id:l[i].itemId, row:row};
  246.         }
  247.         if (n == 0) { 
  248.             var row = ISRILxul.createNode('row', {class:'isRitL-dim'} );
  249.             var title = ISRILxul.createNode('label', {value:ISRIL.l('NoOfflineItems')});
  250.  
  251.             row.appendChild(title);
  252.             ISRILxul.bip('offlineList-rows').appendChild(row);
  253.         }
  254.         
  255.     },
  256.     
  257.     offlineToggleUncached : function(btn) {
  258.         
  259.         ISRILoptions.offlineListView *= -1;
  260.         
  261.         for(i in ISRILoptions.checkList) {
  262.             if (ISRILoptions.checkList[i].row.className == ISRILxul.dPrefix + 'not-saved-offline') {
  263.                 ISRILoptions.checkList[i].row.hidden = ( (ISRILoptions.offlineListView==1) ? (true):(false) );            
  264.             }
  265.         }
  266.         
  267.         btn.label = ((ISRILoptions.offlineListView==1)?ISRIL.l('ShowUncached'):ISRIL.l('HideUncached'));
  268.         
  269.     },
  270.     
  271.     offlineSelectAll : function() {
  272.         
  273.         for(i in ISRILoptions.checkList) {
  274.             if (!ISRILoptions.checkList[i].row.className) {
  275.                 ISRILoptions.checkList[i].chkbox.checked = true;
  276.             }
  277.         }
  278.         
  279.     },
  280.     
  281.     offlineRemoveSelected : function() {
  282.         
  283.         if (ISRILprefs.prefB('prompt_clear_offline')) {
  284.             var check = {value: false};
  285.             var result = ISRIL.sPrompts.confirmCheck(window, ISRIL.l('OfflineTitle'), ISRIL.l('DeleteCache'), ISRIL.l('DoNotAskAgain'), check);
  286.             ISRILprefs.setPref('prompt_clear_offline', !check.value);
  287.         } else {
  288.             var result = true;    
  289.         }
  290.         if (result) {            
  291.             
  292.             var c = 0;
  293.             for(i in ISRILoptions.checkList) {
  294.                 if (ISRILoptions.checkList[i].chkbox.checked) {
  295.                     ISRILoffline.deleteOffline( ISRILoptions.checkList[i].id );
  296.                     c++;
  297.                 }
  298.             }
  299.             
  300.             ISRILoptions.offlinePopList();
  301.             
  302.             if (c == 0) {
  303.                 ISRILxul.sPrompt.alert(window, ISRIL.l('ReadItLater'), ISRIL.l('NothingSelected') );
  304.             }
  305.             
  306.         }        
  307.         
  308.     },
  309.     
  310.     // --- Syncing ---  //
  311.     
  312.     CheckSyncPrivacy : function() {
  313.         if (!ISRILoptions.CheckedServer) {
  314.             var ajax = new ISRILajax();
  315.             var params = ISRILsync.lin();
  316.             ajax.post(ISRILsync.apiURL + 'user', ISRILoptions.CheckSyncPrivacyCallback, params);
  317.         }
  318.     },
  319.     
  320.     CheckSyncPrivacyCallback : function(r) {
  321.         var data = ISRIL.json.decode(r);
  322.         ISRILxul.bip('feed-private').checked = data.feed_protected==1?true:false;
  323.         ISRILprefs.setPref('feed-private', data.feed_protected==1?true:false);
  324.         ISRILprefs.setPref('feed-email-saved', data.email==1?true:false);
  325.         ISRILoptions.CheckedServer = true;
  326.     },
  327.     
  328.     CheckOnlineSettings : function() {
  329.         if (ISRILxul.bip('feed').checked) { //Online Access on
  330.             
  331.             ISRILoptions.CheckSyncPrivacy();
  332.             
  333.             ISRILxul.bip('online-off').hidden = true;
  334.             ISRILoptions.DisableGroup('sync', false);
  335.             ISRILxul.bip('feed-private').disabled = false;
  336.             
  337.             if (ISRILxul.bip('sync').checked) {                
  338.                 ISRILoptions.SyncSetupStep( ISRILprefs.prefB('sync')?3:0 );
  339.                 ISRILoptions.DisableGroup('sync-setup', false);                
  340.             } else {
  341.                 ISRILoptions.SyncSetupStep(0);
  342.                 ISRILoptions.DisableGroup('sync-setup', true);                
  343.             }
  344.             
  345.         } else {
  346.             ISRILxul.bip('sync').checked = false;
  347.             ISRILxul.bip('online-off').hidden = false;
  348.             ISRILxul.bip('feed-private').disabled = true;
  349.             ISRILoptions.SyncSetupStep(0);
  350.             ISRILoptions.DisableGroup('sync', true);
  351.             ISRILoptions.DisableGroup('sync-setup', true);
  352.         }
  353.     },
  354.     
  355.     DisableGroup : function(g,disabled) {
  356.         var group = ISRILxul.bip('group-'+g);
  357.         group.className = ((!disabled)?(''):('isRitL-dim'));
  358.         t = new Array('checkbox', 'radiogroup', 'textbox', 'button');
  359.  
  360.         for(i=0; i<t.length; i++) {
  361.             ins = group.getElementsByTagName(t[i]);
  362.             for(ii=0; ii<ins.length; ii++) {
  363.                 ins[ii].disabled = disabled;    
  364.             }
  365.         }        
  366.     },
  367.     
  368.     SyncSetupStep : function(step) {
  369.         ISRILxul.bip('sync-step-0').hidden = (step==0)?false:true;    
  370.         ISRILxul.bip('sync-step-1').hidden = (step==1)?false:true;
  371.         ISRILxul.bip('sync-step-2').hidden = (step==2)?false:true;
  372.         ISRILxul.bip('sync-step-3').hidden = (step==3)?false:true;
  373.         
  374.         if (step == 1) {
  375.             //ISRILxul.bip('sync-what-default').hidden = ISRILprefs.pref('feed-which')=='alt'?false:true;
  376.         } else if (step == 2) {
  377.             switch(ISRILxul.bip('sync-what').selectedIndex) {
  378.                 case(0): ISRILoptions.SyncSetupStep(3); break;
  379.                 case(1):
  380.                     ISRILprefs.setPref('feed-which', 'default');
  381.                     ISRILoptions.SyncSetupStep(3);
  382.                     break;                
  383.             }
  384.         } else if (step == 3) {
  385.             ISRILxul.bip('D-feed-id').value = ISRILsync.feedId();
  386.             ISRILxul.bip('D-sync-pass').value = ISRILsync.syncP();
  387.             ISRILxul.bip('SetToSync1').textContent = ISRIL.l('SetToSync1') + ' ' + ISRILsync.feedId() + '.';
  388.             ISRILxul.bip('SetToSync2').textContent = ISRIL.l('SetToSync2');
  389.             if (ISRILprefs.prefB('super-security-mode')) {
  390.                 ISRILxul.bip('D-sync-pass').type = 'password';    
  391.                 ISRILxul.bip('pass-hide').hidden = true;
  392.                 ISRILxul.bip('pass-retrieve').hidden = false;
  393.             } else {
  394.                 ISRILxul.bip('D-sync-pass').type = '';    
  395.                 ISRILxul.bip('pass-hide').hidden = false;
  396.                 ISRILxul.bip('pass-retrieve').hidden = true;                
  397.             }
  398.         }
  399.     },
  400.     
  401.     SaveFeed : function() {
  402.         fId = ISRILxul.bip('L-feed-id').value;
  403.         sPass = ISRILxul.bip('L-sync-pass').value;
  404.         if (fId.length > 0 && sPass.length > 0) {
  405.             ISRILsync.CheckLogin(fId, sPass, ISRILoptions.SaveFeedGo);
  406.         } else {
  407.             ISRILxul.sPrompt.alert(window, ISRIL.l('EnterSync'), ISRIL.l('EnterSyncError') );    
  408.         }
  409.     },
  410.     
  411.     SaveFeedGo : function(r) {
  412.         try {
  413.             var data = ISRIL.json.decode(r);
  414.         } catch(err) {
  415.             return ISRILxul.sPrompt.alert(window, ISRIL.l('LoginFailed'), ISRIL.l('GeneralError') );
  416.         }        
  417.         if (data.msg) {
  418.             return ISRILxul.sPrompt.alert(window, ISRIL.l('DetailsError'), data.msg );            
  419.         }
  420.         if (data.status == 1) {            
  421.             ISRILprefs.setPref('feed-which',     'alt');
  422.             ISRILprefs.setPref('feed-id-alt',     ISRILxul.bip('L-feed-id').value);
  423.             ISRILprefs.setPref('sync-alt',     ISRILxul.bip('L-sync-pass').value);
  424.             ISRILprefs.setPref('last_get',     0);
  425.             
  426.             ISRILxul.bip('L-feed-id').value = '';
  427.             ISRILxul.bip('L-sync-pass').value = '';
  428.                         
  429.             ISRILoptions.Accept();            
  430.  
  431.             ISRILoptions.CheckOnlineSettings();            
  432.         } else {
  433.             ISRILxul.sPrompt.alert(window, ISRIL.l('DetailsError'), ISRIL.l('DetailsErrorMsg') );            
  434.         }
  435.     },
  436.     
  437.     HidePass : function(email, invalidEmail) {
  438.         if (!ISRILprefs.prefB('feed-email-saved')) {
  439.             var input = {value: email?email:ISRIL.l('YourEmail')};
  440.             if ( ISRILxul.sPrompt.prompt(window, ISRIL.l('ReadItLater'), ISRIL.l('GetEmail') + (invalidEmail ? ("\n\n" + ISRIL.l('InvalidEmail')) : ''), input, null, {}) ) {
  441.                 if (input.value.match(/([A-Za-z0-9\-_\.\+])+@([A-Za-z0-9\-_\+])+.([A-Za-z0-9\-_\+])+/)) {
  442.                     var a = new ISRILajax();
  443.                     var params = ISRILsync.lin() + '&email=' + input.value;
  444.                     a.post(ISRILsync.apiURL + 'user-set-email',ISRILoptions.SetEmailCallback, params);
  445.                     ISRILxul.bip('pass-hide').label = ISRIL.l('SavingEmail') + '...';
  446.                 } else {
  447.                     ISRILoptions.HidePass(input.value, true);                    
  448.                 }
  449.             }
  450.             return false;
  451.         } else {
  452.             ISRILprefs.setPref('super-security-mode', true);
  453.             ISRILxul.bip('D-sync-pass').type = 'password';
  454.             ISRILxul.bip('pass-hide').hidden = true;
  455.             ISRILxul.bip('pass-retrieve').hidden = false;
  456.         }
  457.     },
  458.     
  459.     SetEmailCallback : function(r) {
  460.         try {
  461.             var data = ISRIL.json.decode(r);
  462.         } catch(err) {
  463.             return ISRILxul.sPrompt.alert(window, ISRIL.l('ReadItLater'), ISRIL.l('GeneralError') );
  464.         }        
  465.         if (data.msg) {
  466.             return ISRILxul.sPrompt.alert(window, ISRIL.l('DetailsError'), data.msg );            
  467.         }
  468.         if (data.status == 1) {            
  469.             ISRILprefs.setPref('feed-email-saved',        true);
  470.             ISRILoptions.HidePass();            
  471.         } else {
  472.             ISRILxul.sPrompt.alert(window, ISRIL.l('DetailsError'), ISRIL.l('DetailsErrorMsg') );            
  473.         }        
  474.     },
  475.     
  476.     RetrievePass : function() {        
  477.         ISRIL.GoTo('http://readitlaterlist.com/forgot', false, 'window');
  478.     },
  479.     
  480.     ChangePassword : function() {
  481.         ISRIL.GoTo('http://readitlaterlist.com/pass', false, 'window');
  482.     },
  483.     
  484.     ToggleFeedPassword : function() {
  485.         if (ISRILxul.bip('feed-private').checked) {
  486.             ISRILxul.sPrompt.alert(window, ISRIL.l('ReadItLater'), ISRIL.l('NotePasswordFeed') );
  487.         }
  488.         if (ISRILprefs.prefB('feed-private') != ISRILxul.bip('feed-private').checked) {
  489.             ISRIL.ajax = new ISRILajax();
  490.             var params = ISRILsync.lin() + '&feed_protected=' + (ISRILxul.bip('feed-private').checked?1:0);
  491.             ISRIL.ajax.post(ISRILsync.apiURL + 'feed-private',ISRILoptions.ToggleFeedPasswordCallback, params);
  492.             return false;
  493.         }
  494.     },
  495.     
  496.     ToggleFeedPasswordCallback : function(r) {
  497.         var data = ISRIL.json.decode(r);
  498.         if (data.status == 1) {
  499.             ISRILprefs.setPref('feed-private', data.setAs==1?true:false);                    
  500.         }        
  501.     },
  502.     
  503.     DeleteOnlineList : function() {
  504.         if ( ISRILxul.sPrompt.confirm(window, ISRIL.l('ReadItLater'), ISRIL.l('ClearAccountPrompt') + "\n\n" + ISRIL.l('GoThereNow') ) ) {
  505.             ISRIL.GoTo('readitlaterlist.com/privacy_clear/', null, 'window');
  506.         }
  507.         return false;
  508.     },
  509.     
  510.     /* --- */
  511.     
  512.     checkedTxt : function(o) { return ( (o.checked) ? ('true'):('false') ); },
  513.     
  514.     Accept : function() {
  515.         
  516.         try {
  517.         
  518.             //General
  519.             //Reading
  520.             ISRILprefs.setPref('read',        ISRILxul.bip('read').selectedItem.value );
  521.             ISRILprefs.setPref('mark',        ISRILxul.bip('mark').selectedItem.value );
  522.             ISRILprefs.setPref('open',        ISRILxul.bip('open').selectedItem.value );
  523.             ISRILprefs.setPref('autoMark',        ISRILxul.bip('autoMarkItems').checked );
  524.             
  525.             //Saving
  526.             ISRILprefs.setPref('auto-close-tab',    ISRILxul.bip('closeTab').checked );
  527.             ISRILprefs.setPref('link-checks',    ISRILxul.bip('link-checks').selectedItem.value );
  528.             if (ISRILxul.bip('folder').selectedItem.value != ISRILprefs.pref('folderId') ) {
  529.                 ISRIL.saveNewFolder( ISRILxul.bip('folder').selectedItem.value );
  530.             }
  531.             ISRILprefs.setPref('auto-tags',    ISRILxul.bip('AutoTags').value );        
  532.             
  533.             
  534.             //Keyboard Shortcuts
  535.             var listitems = ISRILxul.bip('ks').getElementsByTagName('listitem');
  536.             var id;
  537.             var keySet;
  538.             for(i in listitems) {
  539.                 if (listitems[i].id) {
  540.                     id = listitems[i].id.replace(ISRILxul.dPrefix + 'ks-','');
  541.                     ISRILprefs.setPref('hotkey_'+id, listitems[i].value, true);
  542.                 }
  543.             }
  544.             ISRIL.SetupKeyStrokes(); //not being called from wo (or not available)
  545.             
  546.     
  547.             //Appearance
  548.             PerPage = ISRILxul.bip('list-page').selectedIndex + ISRILxul.bip('list-page').getAttribute('min') * 1;        
  549.             ISRILprefs.setPref('list-view',    ISRILxul.bip('list-view').selectedItem.value );
  550.             ISRILprefs.setPref('list-place',    ISRILxul.bip('list-place').selectedItem.value );
  551.             ISRILprefs.setPref('list-type',    ISRILxul.bip('list-type').selectedItem.value );
  552.             ISRILprefs.setPref('list-page',    PerPage >= 4 ? PerPage : 4 );
  553.             
  554.             
  555.             //Buttons
  556.             ISRILprefs.setPref('context-menu',    ISRILxul.bip('context-menu').checked );
  557.             ISRILprefs.setPref('force-styles',    ISRILxul.bip('force-styles').checked );
  558.             ISRILprefs.setPref('clicktosaveinbar',    ISRILxul.bip('ShowClickToSave').checked );
  559.             ISRILprefs.setPref('show-count',    ISRILxul.bip('ShowUnreadCount').checked );
  560.             wo.ISRILxul.UseClickToSaveStatusBar();
  561.             wo.ISRILxul.ShowCount(true);
  562.             
  563.             
  564.             //Offline
  565.             ISRILprefs.setPref('autoOffline',    ISRILxul.bip('AutoOffline').checked );        
  566.             
  567.             
  568.             //Google Reader        
  569.             ISRILprefs.setPref('integrate-gr',    ISRILxul.bip('integrate-gr').checked );
  570.             
  571.             
  572.             //Syncing        
  573.             if (!ISRILprefs.prefB('feed') && ISRILxul.bip('feed').checked ) {
  574.                 ISRILprefs.setPref('feed',    ISRILxul.bip('feed').checked);
  575.                 ISRILsync.getUpdatesStart(true);
  576.             } else {
  577.                 ISRILprefs.setPref('feed',    ISRILxul.bip('feed').checked);
  578.             }        
  579.             ISRILprefs.setPref('sync',        ISRILxul.bip('sync').checked);
  580.             
  581.             ISRIL.checkPage();
  582.             
  583.             ISRILsync.GetAFeed();
  584.             
  585.             if (wo.document.getElementById('sidebar').contentWindow.location.href == "chrome://isreaditlater/content/isreaditlaterlist.xul") {
  586.                 wo.ISRILxul.bi('sidebar').contentWindow.ISRILxul.OpenReadingList();
  587.             }
  588.             
  589.             return true;
  590.         
  591.         } catch(err) {
  592.             alert('Error saving options: ' + err);
  593.         }
  594.         
  595.     },
  596.     
  597.     Cancel : function() {
  598.         return true;
  599.     },
  600.     
  601.  
  602. }
  603.  
  604. var ISRILoptions = new ISRILoptions();